package com.demo.upload;

import java.io.*;
import java.net.ServerSocket;
import java.net.Socket;

/**
 * 文件上传的服务端
 * @author gy
 * @date 2022/5/4
 */
public class TCPFileUploadServer {
    public static void main(String[] args) throws Exception {
        // 1、服务端在本机监听8887端口
        ServerSocket serverSocket = new ServerSocket(8887);
        System.out.println("服务端在本机监听  8887 端口");
        // 2、等待连接
        Socket socket = serverSocket.accept();

        //3、读取客户端发送的数据
        // 通过socket拿到 输入流
        BufferedInputStream bis = new BufferedInputStream(socket.getInputStream());
        byte[] bytes = StreamUtils.streamToByteArray(bis);

        // 4、将得到的 字节数组，写入到指定路径中去，就得到一个文件
        String targetPath = "20220503-network-study/src/main/resources/qie2.png";
        // 需要先创建一个输出流
        BufferedOutputStream bos = new BufferedOutputStream(new FileOutputStream(targetPath));
        // 开始写入
        bos.write(bytes);
        bos.close();

        // 向客户端回复 "收到图片"
        // 通过socket 获取输出流（字符）
        BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(socket.getOutputStream()));
        bw.write("收到图片");
        bw.flush();
        // 设置结束标志符
        socket.shutdownOutput();


        // 5、关闭其他资源
        bw.close();
        bis.close();
        socket.close();
        serverSocket.close();

    }
}
